package com.cqupt.service;

import com.cqupt.pojo.Problem;
import com.cqupt.pojo.Trigger;

import java.util.List;
import java.util.Map;

public interface TriggerService {

    /**
     * 获取指定监控项的所有触发器
     * @param itemId 监控项id
     * @param token 令牌
     * @return
     */
     List<Map<String,Object>> getAllTriggersByItemid(final String itemId, final String token);

    /**
     * 根据主机id获取所有触发器
     * @param hostid
     * @param token
     * @return
     */
     List<Map<String, Object>> getAllTriggersByHostid(final String hostid, final String token);
    // 根据告警项id获取相关摸板信息
     Map<String,Object> getTempByTriggerId(final String triggerid,final String token);

    /**
     * 创建触发器告警项
     * @param triggerNews 触发器封装对象
     * @return
     */
    Map<String,Object> createTrigger(Map<String,Object> triggerNews);

    /**
     * 删除告警项
     * @param triggerIds
     * @return
     */
    Map<String,Object> deleteTrigger(List<String> triggerIds);

    /**
     * 启用和停用告警项
     * @param triggerid 触发器id
     * @param status 触发器状态
     * @return
     */
    Map<String,Object> updateTrigger(final String triggerid,final String status);

    /**
     * 查询trigger的翻译（弃用）
     * @param hostId
     * @return
     */
    Trigger selectTranslatedTrigger(Long hostId);

    /**
     * 根据id查询单个信息
     * @param triggerid
     * @return
     */
    Map<String, Object> getTriggerByID(String triggerid);

    /**
     * 新的获取键值
     * @param hostid
     * @param token
     * @return
     */
    List<Map<String, Object>> getAllTriggersByHostid_new(final String hostid, final String token);
    // 从配置文件中读取固定模板触发器
    List<Problem> getAllTriggerByXML();

    /**
     * 自定义的触发器写入 问题 数据库中
     * @param problem 问题类
     * @return
     */
    boolean insertProblemIntoDatabase(Problem problem);

    /**
     * 查找自定义的触发器
     * @return
     */
    List<Problem> findComProblems();

    /**
     * 查询是否重名
     * @param description
     * @return
     */
    boolean isExistTrigger(String description, String hostid);
}
